Вывод о возможностях анализатора Visual Studio 2013: Анализатор не способен отлавливать серьёзные ошибки, требующие хоть какого-то проявления взаимосвязей. Он скорее может идти на ряду с такими средствами, как pylint для python - определяя скорее стиль программирования, нежели распознавая логику приложения и находя в ней ошибки. Средство Aegis имело 3 особенности: 1) Была найдена возможность утечки памяти при вызове функций exit(-1) "Зафиксирована утечка памяти в конструкции , выделенной в <:0:0> в контексте :0:0-> void * D.2563 = malloc(integer(16)) : source.c:21:9> (RES-01A)" "Зафиксирована утечка памяти в конструкции , выделенной в <:0:0> в контексте :0:0-> void * D.2567 = malloc(integer(16)) : source.c:36:17> (RES-01A)" 2) Т.к. могла произойти ошибка при аллоцировании памяти, то потом везде aegis пишет, что возможна ошибка использования некорректного указателя, несмотря на наличие обработки ошибки после выделения памяти, так что тут он не прав "Использование некорректного (INVALID) указателя char * ..." или "Использование некорректного (NULL) указателя double * ..." в зависимости от того, как какому парамтеру мы обращаемся - к double или к char (что тоже странно, потому что не должно бытьразницы между тем, к какому полю структуры мы обращаемся) 3) Ошибка утечки памяти при потере указателя p_start и не очистке циклически выделенной памяти несколько раз - не было зафиксированно, однако именно тут и критична утечка памяти (потому что потеря памяти на exit - не является критичной, ибо ось сама освободит память), так что в общем можно сказать, что Aegis не заметил самого главного Сравнение: Aegis - гораздо более качественен, чем анализатор VS2013, однако всё равно является недостаточно качесвтенным, потому что можно вполне починить так, чтобы aegis не выявлял аномалий, однако из-за нарушения логики обращения с указателями и потере указателя p_start - всё равно осталась бы большая утечка памяти, которую никто не выявил, даже Aegis.